/* 
 * File:   InitParams.h
 * Author: georgy
 *
 * Created on February, 2012
 */

#ifndef _INITPARAMS_H
#define	_INITPARAMS_H

#include "Particle.h"



enum FLAGS {
    NO_FLAGS_SET       = 0,
    T_FLAG_SET         = 1,
    L_FLAG_SET         = 1 << 1,
    N_FLAG_SET         = 1 << 2,
    CUTOFF_FLAG_SET    = 1 << 3,
    DT_FLAG_SET        = 1 << 4,
    DTEMP_FLAG_SET     = 1 << 5,
    ALL_FLAGS_SET      = T_FLAG_SET | L_FLAG_SET | N_FLAG_SET
                         | CUTOFF_FLAG_SET | DT_FLAG_SET | DTEMP_FLAG_SET
};



class InitParams {
public:
    explicit    InitParams(const char *filename);

    float       getTemperature() const;
    int         getNParticles() const;
    float       getLinearSize() const;
    float       getcutOff() const;
    float       getDeltaT() const;
    float       getdT() const;

private:
                InitParams(const InitParams &other);
    InitParams  &operator=(const InitParams &other);

    float       L;         // Linear size of cube.
    float       T;         // Temperature.
    float       cutOff;    // CutOff distance.
    float       dt;        // time step.
    float       dT;        // Temperature terminational condition.
    int         N;         // Number of particles.
    int         comp;
};



inline
float InitParams::getLinearSize() const
{
    return L;
}

inline
int InitParams::getNParticles() const
{
    return N;
}

inline
float InitParams::getTemperature() const
{
    return T;
}

inline
float InitParams::getcutOff() const
{
    return cutOff;
}

inline
float InitParams::getDeltaT() const
{
    return dt;
}

inline
float InitParams::getdT() const
{
    return dT;
}



#endif	/* _INITPARAMS_H */

